Amazon AuroraでAmazon Machine LearningのDatasourceを作ってみた
前回、RDS for MySQLを使ってAmazon Machine Learning(Amazon ML)のDatasourceを作成する手順を試してみました。そしてAmazon MLのFAQでは「c)MySQL エンジンで稼働しているデータベース1」に対応と書かれているわけです。更にAuroraはMySQL互換なわけでして、それならもしかしたらAuroraをAmazon MLのDatasourceに出来るかも!ということで試してみました。結論から言うとAuroraでも正常にDatasourceを作成することが出来ました!!
前提
まずは前提の確認です。Auroraは作成済みで、前回のRDS for MySQLの場合と同じくtest_dbにbankingテーブルが存在している前提です。bankingテーブルはAmazon MLのチュートリアルに載っているbanking.csvに対応しています。また、リージョンはAmazon MLが利用可能なバージニアを利用しています。
項目 | 値 |
---|---|
リージョン | バージニア(us-east-1) |
RDSのEngine | Aurora |
RDSのInstanceIdentifier | test-aurora |
Auroraのデータベース | test_db |
Auroraのテーブル | banking |
bankingテーブルのDDLやbanking.csvのインポート方法はRDS for MySQLの記事をご参照下さい。
事前準備
RDS for MySQLと同じく以下の準備が必要になります。手順についてはRDS for MySQLの記事をご参照下さい。
- AuroraのセキュリティグループをData Pipelineによって起動されるEC2インスタンスからアクセス可能にしておく
- Data Pipelineの初回のセットアップ(IAM Roleの準備)
- S3バケットの作成
- Amazon ML用のIAM Roleの作成
- bankingテーブルに対応するData Schemaの作成
RDS for MySQLとの差分
一通り試した範囲ではRDS for MySQLとAuroraの手順に差分はありませんでした。
一点だけ補足する点があるとすればAuroraの場合はCluster Endpointが存在しますが、Data Pipelineからアクセスする際はInstance Endpointを利用します。これはCreateDataSourceFromRDS APIの仕様としてInstanceIdentifierを指定する形になっているためです。恐らくですがInstanceIdentifierを使って内部でDescribeDBInstances APIを実行しInstance Endpointを取得してData PipelineのConnection Stringを指定しているためであると予想しています。
なお、実際にAuroraのDB Cluster IdentifierをCreateDataSourceFromRDS APIのInstanceIdentifierに指定してみたところDatasourceの作成に失敗しました。そのためRDS for MySQLと同様にDB Cluster IdentifierではなくDB Instance Identifierを指定して下さい。
まとめ
ということでAmazon MLはDatasourceとしてRDS for MySQLだけでなくAuroraも利用可能です。RDS for MySQLからAuroraに移行してもAmazon MLのDatasourceとして利用できるので安心して移行できますね!
- よくある質問 - Amazon Machine Learning (機械学習モデルを容易に作成、実行) | アマゾン ウェブ サービス(AWS 日本語)の[Q: データはどこに保存しますか?]をご参照下さい。 ↩